package com.deepoove.poi.tl.example;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;

import com.deepoove.poi.data.RowRenderData;
import com.deepoove.poi.policy.DynamicTableRenderPolicy;
import com.deepoove.poi.policy.TableRenderPolicy;
import com.deepoove.poi.util.TableTools;

/**
 * 付款通知书 明细表格的自定义渲染策略<br/>
 * 1. 填充货品数据 <br/>
 * 2. 填充人工费数据 <br/>
 * @author Sayi
 * @version
 */
public class DetailTablePolicy extends DynamicTableRenderPolicy {

    int laborsStartRow = 3;

    @Override
    public void render(XWPFTable table, Object data) throws Exception {
        if (null == data) return;
        List<RowRenderData> list = (List<RowRenderData>) data;
        // 创建新的 ArrayList 并添加元素
        ArrayList<RowRenderData> labors = new ArrayList<>(list);

        table.removeRow(laborsStartRow);
        for (int i = labors.size() - 1; i >= 0; i--) {
            XWPFTableRow insertNewTableRow = table.insertNewTableRow(laborsStartRow);
            for (int j = 0; j < 6; j++) insertNewTableRow.createCell();
            // 倒序的 也就是最后一行渲染完毕后开始合并单元格
            if (i == 0) {
                //  第1列 第1行到第2行
                TableTools.mergeCellsVertically(table, 0, laborsStartRow, laborsStartRow+1);
                //  第1列 第3行到第4行
                TableTools.mergeCellsVertically(table, 0, laborsStartRow+2, laborsStartRow+3);
                //  第1列 第1行到第2行
                TableTools.mergeCellsVertically(table, 0, laborsStartRow+4, laborsStartRow+5);
                //  第2列 第1行到第7行
                TableTools.mergeCellsVertically(table, 1, laborsStartRow+5, laborsStartRow+6);
                //  3列  第1行到第2行
                TableTools.mergeCellsVertically(table, 2, laborsStartRow+1, laborsStartRow+3);
            }
            TableRenderPolicy.Helper.renderRow(table.getRow(laborsStartRow), labors.get(i));
        }
    }

}
